import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router'

import '@/icons' // icon
import '@/permission' // permission control

import '@/directives'

// 全局混入 --- 混入到所有组件里面
import '@/mixins'

// Vue.prototype.checkPoint = key => {
//   return store.getters.userInfo.roles.points.includes(key)
// }

// // 导入
// import HeadTool from '@/components/HeadTool'
// Vue.component('HeadTool', HeadTool)

import obj from '@/components'
Vue.use(obj)

// // set ElementUI lang to EN
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
// element-ui提供的东西都是组件，而且这些组件哪里都能用
// 那意味着下面这句话肯定有在注册全局组件
// 在调用内部的install方法，install方法在注册全局组件
Vue.use(ElementUI)


// //Vue.use如果传入一个对象，就会调用这个对象的install方法
// const obj = {
//   name: 'jack',
//   age: 16,
//   install (v) {
//     console.log('obj的install被调用了', v === Vue)
//   }
// }
// Vue.use(obj)
// // 如果传入一个函数就是调用这个函数
// function fn () {
//   console.log('fn被调用')
// }
// Vue.use(fn)

Vue.config.productionTip = false

import i18n from '@/i18n'

// 现在应用程序已经准备好了！
// $t这个方法是用来做国际化翻译的
// 在这个函数里传入对应的参数，它就会根据当前语言环境的不同显示不同的文字
new Vue({
  el: '#app',
  i18n, // 把i18n挂载到vue实例后，每个vue实例(组件)都会有$t这个方法
  router,
  store,
  render: h => h(App)
})
